package response

import (
	"github.com/flipped-aurora/gin-vue-admin/server/model/system"
)

type SysUserResponse struct {
	User system.SysUser `json:"user"`
}

type LoginResponse struct {
	User      system.SysUser `json:"user"`
	Token     string         `json:"token"`
	ExpiresAt int64          `json:"expiresAt"`
	ImToken   string         `json:"imToken,omitempty"` // 添加IM token字段
}

// MajorInfo 专业信息嵌套结构体
type MajorInfo struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

// SchoolInfo 学校信息嵌套结构体
type SchoolInfo struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

// SysUserWithDict 包含字典名称的用户信息
type SysUserWithDict struct {
	system.SysUser
	GradeName     string     `json:"gradeName"`     // 年级名称
	School        SchoolInfo `json:"school"`        // 学校信息
	Major         MajorInfo  `json:"major"`         // 专业信息
	EducationName string     `json:"educationName"` // 学历名称
	Province      string     `json:"province"`      // 省份信息
	GenderName    string     `json:"genderName"`    // 性别名称
}

// UserInfoWithDictResponse 包含字典名称的用户信息响应
type UserInfoWithDictResponse struct {
	User SysUserWithDict `json:"user"`
}

// UserInfoWithDictAndFollowResponse 包含字典名称和关注状态的用户信息响应
type UserInfoWithDictAndFollowResponse struct {
	User       SysUserWithDict `json:"user"`
	IsFollowed bool            `json:"isFollowed"` // 是否已关注
}

type FollowResponse struct {
	IsFollowed bool `json:"isFollowed"`
}

type UserIMTokenResponse struct {
	Token   string `json:"token"`
	Expires int64  `json:"expires"` // token过期时间，单位：秒
}
